(*REQUIRES: 输入任意一个整数列表和任意一个整数*)
(*ENSURES: 一个和为给定整数的列表，或 NONE*)
fun subsetSumOption([], s) = if s = 0 then SOME [] else NONE  (* 空列表，只有当s为0时才返回SOME []，否则返回NONE *)
  | subsetSumOption(x::xs, s) =
    case subsetSumOption(xs, s - x) of
      NONE => subsetSumOption(xs, s)  (* 如果上一步返回NONE，则继续考虑不包含x的情况 *)
    | SOME subset => SOME (x::subset)  (* 如果上一步返回SOME subset，则在结果中包含x *)